library("diprate")
library("platetools")
library("RColorBrewer")
d <- read.csv("../data/2020-11-03_lum&cell_counts.csv", as.is=TRUE)
d$time <- round(d$time,2)
d$orig.cell.count <- d$cell.count
d$cell.count <- d$orig.cell.count - d$ch2.pos
d$cell.count <- sapply(d$cell.count, function(x) ifelse(x <= 0, 1, x))
Examine 293FT data
First, use a single cell line in control conditions to assess population growth.
a <- d[d$cell.line=="293FT" & d$drug1.conc==0,]
invisible(do.call(plotGC, getGCargs(a)))

Find wells where the cell counts reach a high value.
x <- a[a$well %in% c("F13","G13","H13"),]
invisible(plotGC(x$time,x$cell.count,x$uid))

x <- a[a$well %in% c("F13","G13","H13"),]
invisible(plotGC(x$time,x$RLU,x$uid))

plot(a$cell.count ~ a$RLU)

invisible(do.call(plotGC, getGCargs(a, dat.col = c("time", "RLU", "uid"))))

Get DIP rates from test plate
Will use to assess variation across plate.
b <- d[d$cell.line=="293FT",]
dipr <- lapply(unique(b$uid), function(id) tryCatch(
{
findDIP(b[b$uid==id,c('time','cell.count','uid')])
},error=function(cond) {NA})
)
names(dipr) <- unique(b$uid)
rates <- b[!duplicated(b$uid),]
rates <- rates[,!colnames(rates) %in% c('time','plate.id','image.time','cell.count')]
rates$rate <- sapply(rates$uid, function(id) dipr[[id]]$dip)
rates$rate.95ci <- sapply(rates$uid, function(id) dipr[[id]]$dip.95ci)
platetools::raw_map(data=rates$rate, well=rates$well, plate=384) + scale_fill_gradient2()

LS0tCnRpdGxlOiAiQW5hbHlzaXMgb2YgMjAyMC0xMS0wMyBjZWxsIGNvdW50ICsgbHVtIGRhdGEiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyIFNldHVwfQpsaWJyYXJ5KCJkaXByYXRlIikKbGlicmFyeSgicGxhdGV0b29scyIpCmxpYnJhcnkoImdncGxvdDIiKQpgYGAKCmBgYHtyIExvYWQgZGF0YX0KZCA8LSByZWFkLmNzdigiLi4vZGF0YS8yMDIwLTExLTAzX2x1bSZjZWxsX2NvdW50cy5jc3YiLCBhcy5pcz1UUlVFKQpkJHRpbWUgPC0gcm91bmQoZCR0aW1lLDIpCmQkb3JpZy5jZWxsLmNvdW50IDwtIGQkY2VsbC5jb3VudApkJGNlbGwuY291bnQgPC0gZCRvcmlnLmNlbGwuY291bnQgLSBkJGNoMi5wb3MKZCRjZWxsLmNvdW50IDwtIHNhcHBseShkJGNlbGwuY291bnQsIGZ1bmN0aW9uKHgpIGlmZWxzZSh4IDw9IDAsIDEsIHgpKQpgYGAKCiMjIyMgRXhhbWluZSAyOTNGVCBkYXRhCkZpcnN0LCB1c2UgYSBzaW5nbGUgY2VsbCBsaW5lIGluIGNvbnRyb2wgY29uZGl0aW9ucyB0byBhc3Nlc3MgcG9wdWxhdGlvbiBncm93dGguCmBgYHtyfQphIDwtIGRbZCRjZWxsLmxpbmU9PSIyOTNGVCIgJiBkJGRydWcxLmNvbmM9PTAsXQpgYGAKCmBgYHtyIFBsb3QgMjkzRlQgY29udHJvbCB3ZWxscywgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9OH0KaW52aXNpYmxlKGRvLmNhbGwocGxvdEdDLCBnZXRHQ2FyZ3MoYSkpKQpgYGAKRmluZCB3ZWxscyB3aGVyZSB0aGUgY2VsbCBjb3VudHMgcmVhY2ggYSBoaWdoIHZhbHVlLgpgYGB7cn0KeCA8LSBhW2Ekd2VsbCAlaW4lIGMoIkYxMyIsIkcxMyIsIkgxMyIpLF0KaW52aXNpYmxlKHBsb3RHQyh4JHRpbWUseCRjZWxsLmNvdW50LHgkdWlkKSkKYGBgCgpgYGB7cn0KeCA8LSBhW2Ekd2VsbCAlaW4lIGMoIkYxMyIsIkcxMyIsIkgxMyIpLF0KaW52aXNpYmxlKHBsb3RHQyh4JHRpbWUseCRSTFUseCR1aWQpKQpgYGAKCmBgYHtyfQpwbG90KGEkY2VsbC5jb3VudCB+IGEkUkxVKQpgYGAKCmBgYHtyIFJMVSwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9OH0KaW52aXNpYmxlKGRvLmNhbGwocGxvdEdDLCBnZXRHQ2FyZ3MoYSwgZGF0LmNvbCA9IGMoInRpbWUiLCAiUkxVIiwgInVpZCIpKSkpCmBgYAoKCiMjIyMgR2V0IERJUCByYXRlcyBmcm9tIHRlc3QgcGxhdGUKV2lsbCB1c2UgdG8gYXNzZXNzIHZhcmlhdGlvbiBhY3Jvc3MgcGxhdGUuCmBgYHtyfQpiIDwtIGRbZCRjZWxsLmxpbmU9PSIyOTNGVCIsXQoKZGlwciA8LSBsYXBwbHkodW5pcXVlKGIkdWlkKSwgZnVuY3Rpb24oaWQpIHRyeUNhdGNoKAogICAgewogICAgICAgIGZpbmRESVAoYltiJHVpZD09aWQsYygndGltZScsJ2NlbGwuY291bnQnLCd1aWQnKV0pCiAgICB9LGVycm9yPWZ1bmN0aW9uKGNvbmQpIHtOQX0pCikKbmFtZXMoZGlwcikgPC0gdW5pcXVlKGIkdWlkKQoKcmF0ZXMgPC0gYlshZHVwbGljYXRlZChiJHVpZCksXQpyYXRlcyA8LSByYXRlc1ssIWNvbG5hbWVzKHJhdGVzKSAlaW4lIGMoJ3RpbWUnLCdwbGF0ZS5pZCcsJ2ltYWdlLnRpbWUnLCdjZWxsLmNvdW50JyldCnJhdGVzJHJhdGUgPC0gc2FwcGx5KHJhdGVzJHVpZCwgZnVuY3Rpb24oaWQpIGRpcHJbW2lkXV0kZGlwKQpyYXRlcyRyYXRlLjk1Y2kgPC0gc2FwcGx5KHJhdGVzJHVpZCwgZnVuY3Rpb24oaWQpIGRpcHJbW2lkXV0kZGlwLjk1Y2kpCgpgYGAKCmBgYHtyIEhlYXRtYXAgb2YgRElQIHJhdGVzfQpwbGF0ZXRvb2xzOjpyYXdfbWFwKGRhdGE9cmF0ZXMkcmF0ZSwgd2VsbD1yYXRlcyR3ZWxsLCBwbGF0ZT0zODQpICsgc2NhbGVfZmlsbF9ncmFkaWVudDIoKQpgYGAKCgo=